home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1986 May / 64er_Magazin_86-05_1986_Markt__Technik_de.d64 / epson plotter (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  5KB  |  143 lines

  1. 1 rem *********************************
  2. 2 rem *                               *
  3. 3 rem *         epson plotter         *
  4. 4 rem *                               *
  5. 5 rem *   c-64 + epson rx 80 (f/t+)   *
  6. 6 rem *       (+ interface)           *
  7. 7 rem *                               *
  8. 8 rem *********************************
  9. 9 rem *                               *
  10. 10 rem*         volker raum           *
  11. 11 rem*     noetherstrasse 20a        *
  12. 12 rem*        8520 erlangen          *
  13. 13 rem*         09131/65511           *
  14. 14 rem*                               *
  15. 15 rem*********************************
  16. 16 :
  17. 17 :
  18. 30 rem "[147] = shift+clr/home
  19. 32 [143] " = cursor down
  20. 34 rem "[154] = c= + 7
  21. 36 [143] " = ctrl + 7
  22. 38 rem "[157] = cursor left
  23. 40 [139][194](49152)[179][177]165[167][147]"plotter masch",8,1:[143] laden druckerausgabe
  24. 42 [151]53281,6
  25. 44 [158]49289 :[143] loeschen des ausgabepuffers
  26. 46 [156]
  27. 48 [153]"loadcont               plotter "
  28. 50 [153]"         c-64 <-> rx-80 (f/t)"
  29. 52 [153]"   eine bel. funktion f(x) wird auf"
  30. 54 [153]"       dem drucker ausgedruckt."
  31. 56 [133]" f(x) = ";f$:[139]f$[178]""[167]74:[143] eingabe der funktion
  32. 58 [153]"load10000 deffnf(x)=";f$
  33. 60 [153]"10010 f$="[199](34);f$;[199](34)
  34. 62 [153]"goto74
  35. 64 poke631,19:poke632,13:poke633,13:poke634,13:poke198,4:end
  36. 66 rem
  37. 68 rem funktion in deffnf einsetzen und f$ zuruecksetzen
  38. 70 rem *** programmierter direktmodus ***
  39. 72 rem
  40. 74 dim sw(200):rem scharparameter
  41. 76 gosub 10000:print"[154]":rem deffnf ausfuehren
  42. 78 print"[147] f(x) = ";f$
  43. 80 print" angabe des definitionsbereiches :"
  44. 82 input" xa,xe :   -5,5       [157][157][157][157][157][157][157][157][157][157][157][157][157]";xa,xe
  45. 83 ifxa>xe thenprint"[145][145]";:goto82
  46. 84 input" ya,ye :   -5,5       [157][157][157][157][157][157][157][157][157][157][157][157][157]";ya,ye
  47. 85 ifya>ye thenprint"[145][145]";:goto84
  48. 86 rem definitions und wertebereich von f(x)
  49. 88 print" aufloesung y-richtung :"
  50. 90 print" 0) 480 einzelpunkte"
  51. 92 print" 1) 960 einzelpunkte"
  52. 94 print" 2) 960 einzelpunkte doppelte gesch."
  53. 96 print" 3) 1920 einzelpunkte "
  54. 98 print" 4) 640 einzelpunkte "
  55. 100 print" 5) 720 einzelpunkte "
  56. 102 input" aufloesung :  0[157][157][157]";a1
  57. 104 if a1=0thenaf=480
  58. 106 if a1=1thenaf=960
  59. 108 if a1=2thenaf=960
  60. 110 if a1=3thenaf=1920
  61. 112 if a1=4thenaf=640
  62. 114 if a1=5thenaf=720:a1=6
  63. 116 ifa1>5goto102
  64. 118 poke2,a1
  65. 120 rem
  66. 122 rem aufloesung fuer drucker eingeben (y-richtung)
  67. 124 rem uebergabe dieser aufloesung an das masch.prog.
  68. 126 rem
  69. 128 print"[147] f(x) = "f$
  70. 130 print" breite der x-achse auf dem drucker"
  71. 132 print" in punkten"
  72. 134 input" aufloesung :  480[157][157][157][157][157]";a2
  73. 135 a2=a2-1
  74. 136 rem angabe der laenge des ausdrucks a2/8=zeichen
  75. 138 input"[147] ist f(x) eine funktionenschar   n[157][157][157]";fs$
  76. 140 if fs$="n"then150
  77. 142 sc=1:print
  78. 144 print" a("sc")= ";:input gf$
  79. 146 ifgf$="ende"then150
  80. 148 sw(sc)=val(gf$):sc=sc+1:goto144
  81. 150 rem falls schar,dann angabe der parameter
  82. 152 dy=abs(ye-ya)/af:rem 1punkt=?x
  83. 154 dx=abs(xe-xa)/a2:rem schrittweite
  84. 156 rem einheiten der x-und y-achse
  85. 158 lx=(-ya*af/(ye-ya))
  86. 160 ly=int((-xa*a2/(xe-xa))+.5)+1
  87. 162 iflx<0orlx>480 thenlx=-1
  88. 164 ifly<0orly>480 thenly=-1
  89. 166 iflx=-1then172
  90. 168 rem festlegung der lage der achsen
  91. 170 fori=lyto1step-30:of=i:next:rem beginn der skaleneinteilung
  92. 172 rem start des plottens
  93. 174 rem ******************
  94. 176 open1,4:print#1,chr$(27);"3";chr$(20);
  95. 178 print#1,"f(x)="f$:print#1
  96. 180 print#1,"dx="30*dx"      dy="30*dy:print#1
  97. 182 print#1,"xa,xe = ("xa","xe")":print#1
  98. 184 print#1,"ya,ye = ("ya","ye")":print#1
  99. 186 iffs$="j"thenprint#1,"a = ("sw(1);
  100. 188 iffs$="j"thenfori=2tosc-1:print#1,","sw(i);:next:print#1,")"
  101. 190 rem ausdruck der funktion,definitions,wertebereich,einheiten der x,y achse
  102. 192 rem gegebenfalls scharparameter
  103. 194 cmd1:rem ausgabe komplett auf drucker,notwendig fuer masch.prog.
  104. 196 by=0:ku=-1:co=xa-dx:fori=1toa2step8:bi=256:rem begin der plotsvchleife
  105. 198 iffs$="j"thenforaq=1tosc-1:rem falls schar dann alle parameter
  106. 200 foru=itoi+7:co=co+dx:bi=bi/2:rem schritte zu 8 fuer ausdruck auf drucker
  107. 202 iffs$="j"thena=sw(aq):rem scharparameter
  108. 204 poke768,112:poke769,168:yi=fnf(co):rem ausschalten der fehlermeldung
  109. 206 rem und bestimmung des funktionswertes
  110. 208 ry=int(((yi-ya)*(af-1)/(ye-ya))+.5):rem umrechnen des funktionswertes
  111. 210 poke768,139:poke769,227:rem fehlermeldung frei geben
  112. 212 ifry<0orry>afthen216:rem funktionspunkt einzeichnen ?
  113. 214 pokery+49920,peek(49920+ry)orbi:rem punkt an ausgabepuffer geben
  114. 216 ifku>=0thenku=ku+1:rem zaehler fuer einteilung der x-achse
  115. 218 ifu=lythenby=bi
  116. 220 ifu=ofthenku=0
  117. 222 if(ku/30)=int(ku/30)thenvr=1:po=bi:rem skaleneinteilung ?
  118. 224 nextu:iffs$="j"thenku=ku-8:co=co-8*dx:bi=256:nextaq:co=co+8*dx:ku=ku+8
  119. 226 rem 8punkte fertig machen,dann ev. alle scharparameter durchlaufen lassen
  120. 228 iflx=-1thensys49152:nexti:goto240:rem ausgabe auf drucker
  121. 230 poke49920+lx,255:rem x-achse setzen
  122. 232 ifvr=1thenforq=-1to1:poke49920+lx+q,peek(49920+lx+q)orpo:next:vr=0
  123. 234 rem skaleneinteilung
  124. 236 ifby<>0thengosub244:rem y-achse ausgeben
  125. 238 sys49152:nexti:rem drucken
  126. 240 print#1:close1:rem kanal schliessen
  127. 242 goto46:rem neue funktion
  128. 244 rem
  129. 246 forv=49920to49920+af:pokev,(peek(v) or by):nextv
  130. 248 iflx=-1thenreturn
  131. 250 b1=by/2:ifb1<1thenb1=0
  132. 252 b2=by/4:ifb2<1thenb2=0
  133. 254 b3=by*2:ifb3>128thenb3=0
  134. 256 b4=by*4:ifb4>128thenb4=0
  135. 258 ag=b1+b2+b3+b4
  136. 260 forzx=0to(af-lx)step30:poke49920+lx+zx,peek(49920+lx+zx)orag:next
  137. 262 forzx=0tolxstep30:poke49920+lx-zx,peek(49920+lx-zx)orag:next
  138. 264 by=0:return
  139. 266 rem y-achse ausgeben und skaleneinteilung vornehmen
  140. 10000 deffnf(x)=x
  141. 10010 f$="x"
  142. 10020 return
  143.